package in.lib.manager; import in.lib.Constants; import in.rob.client.R; import in.rob.client.base.RobinDialogActivity; import in.rob.client.dialog.base.DialogBuilder; import in.rob.client.dialog.base.ProgressBuilder; import java.io.File; import net.callumtaylor.asynchttp.AsyncHttpClient; import net.callumtaylor.asynchttp.response.CacheResponseHandler; import android.app.NotificationManager; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.Window; public class UpdateManager extends RobinDialogActivity { private ProgressDialog progress; private String updateUrl = "https://beta.robinapp.net/robin.apk"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getExtras() != null) { updateUrl = getIntent().getExtras().getString(Constants.EXTRA_WEB_URL); } progress = ProgressBuilder.create(getContext()); getWindow().setBackgroundDrawable(null); requestWindowFeature(Window.FEATURE_NO_TITLE); setVisible(false); downloadNewBuild(); } @Override protected void onDestroy() { if (progress != null && progress.isShowing()) { progress.dismiss(); } super.onDestroy(); } public void downloadNewBuild() { final AsyncHttpClient client = new AsyncHttpClient(updateUrl); progress.setCanceledOnTouchOutside(false); progress.setMessage(getString(R.string.downloading)); progress.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { client.cancel(); } }); if (!getExternalCacheDir().exists()) { getExternalCacheDir().mkdir(); } new File(getExternalCacheDir().getAbsolutePath() + "/update.apk").delete(); client.get(new CacheResponseHandler(getExternalCacheDir().getAbsolutePath() + "/update.apk") { @Override public void onSend() { progress.show(); } @Override public void onSuccess() { File f = getContent(); NotificationManager m = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); m.cancel(65834); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(f), "application/vnd.android.package-archive"); startActivity(intent); finish(); } @Override public void onFinish(boolean failed) { if (failed) { DialogBuilder.create(UpdateManager.this) .setTitle(R.string.error) .setMessage(R.string.update_failed) .setPositiveButton(R.string.close, null) .show(); } if (progress != null && progress.isShowing()) { progress.dismiss(); } finish(); } }); } }